#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SLDataType;
typedef struct SListNode
{
	SLDataType val;
	struct SListNode* next;
}SListNode;

void SLPrint(SListNode* phead);
SListNode* BuyListNode(SLDataType);

void SLPushBack(SListNode** pphead, SLDataType val);
void SLPushFront(SListNode** pphead, SLDataType val);
void SLPopBack(SListNode** pphead);
void SLPopFront(SListNode** pphead);

SListNode* SLFind(SListNode* phead, SLDataType val);
void SLInsert(SListNode**pphead ,SListNode* pos, SLDataType val);
void SLErase(SListNode** pphead, SListNode* pos);

void SLInsertAfter(SListNode* pos, SLDataType val);
void SLEraseAfter(SListNode* pos);

void SLDestroy(SListNode* phead);